package com.cloudbroker.bcs.platform.dav.bizapi.t2service.export;

import com.cloudbroker.bcs.common.entity.HSBCPSBackVO;
import com.cloudbroker.bcs.platform.dav.bizapi.constants.IFSFunctionIdsNew;
import com.cloudbroker.bcs.platform.dav.bizapi.service.base.vo.PageVO;
import com.cloudbroker.bcs.platform.dav.bizapi.service.business.wechat.vo.PayForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.export.vo.request.GetAccessTokenForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.export.vo.request.GetTicketForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.export.vo.request.GetUserInfoByAccessTokenForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.export.vo.request.GetUserInfoByCodeForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.export.vo.request.MassMessageForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.export.vo.request.SaveLoginInformationForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.export.vo.request.SendWxMessageForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.export.vo.response.GetAccessTokenBackVo;
import com.cloudbroker.bcs.platform.dav.bizapi.service.export.vo.response.GetHisMessageBackResult;
import com.cloudbroker.bcs.platform.dav.bizapi.service.export.vo.response.GetTicketBackVo;
import com.cloudbroker.bcs.platform.dav.bizapi.service.export.vo.response.GetUserInfoBackVo;
import com.cloudbroker.bcs.platform.dav.bizapi.service.export.vo.response.TongLianPayBackVo;
import com.hundsun.jresplus.remoting.impl.annotation.Service;
import com.hundsun.jresplus.remoting.impl.annotation.ServiceModule;
import com.hundsun.jresplus.remoting.impl.annotation.ServiceParam;

/**
 * Created by xuyn15828 on 2016/5/12.
 */
@ServiceModule
public interface WeixinT2BizService {
    
    /**
     * 通过code获取access_token
     */
    @Service(functionId = "5070601", desc = "通过code获取access_token")
    public GetAccessTokenBackVo getAccessTokenByCode(@ServiceParam("param") GetAccessTokenForm param);
    
    /**
     * 使用access_token获取用户信息
     */
    @Service(functionId = "5070602", desc = "使用access_token获取用户信息")
    public GetUserInfoBackVo getUserinfoByAccessToken(@ServiceParam("param") GetUserInfoByAccessTokenForm param);
    
    /**
     * 使用code获取用户信息
     */
    @Service(functionId = "5070603", desc = "使用code获取用户信息")
    public GetUserInfoBackVo getUserinfoByCode(@ServiceParam("param") GetUserInfoByCodeForm param);
    
    /**
     * 使用code获取用户信息
     */
    @Service(functionId = IFSFunctionIdsNew.IFSDavWeiboFuncIds.FUNC_GET_USERINFO_BY_CODE_TENANT, desc = "使用code和租户信息获取用户信息")
    public GetUserInfoBackVo getUserinfoByCodeTenant(@ServiceParam("param") GetUserInfoByCodeForm param);
    
    /**
     * 根据appid与appsecret获取获取AccessToken
     */
    @Service(functionId = "5070604", desc = "根据appid与appsecret获取获取AccessToken")
    public GetAccessTokenBackVo getAccessToken(@ServiceParam("param") GetAccessTokenForm param);
    
    /**
     * 获取api_ticket
     * */
    @Service(functionId = "5070605", desc = "获取api_ticket")
    public GetTicketBackVo getTicket(@ServiceParam("param") GetTicketForm param);
    
    /**
     * 微信统一下单
     * */
    @Service(functionId = "5070606", desc = "微信统一下单")
    public TongLianPayBackVo unifiedorder(@ServiceParam("param") PayForm param);
    
    /**
     * 5070624-微信公众号群发消息
     * @param param
     * @return
     */
    @Service(functionId = IFSFunctionIdsNew.IFSDavWeiboFuncIds.FUNC_MASS_MESSAGE, desc = "微信公众号群发消息")
    public HSBCPSBackVO massMessage(@ServiceParam("param") MassMessageForm param);
    
    /**
     * 5070625-微信公众号群发消息
     * @param param
     * @return
     */
    @Service(functionId = IFSFunctionIdsNew.IFSDavWeiboFuncIds.FUNC_GET_HIS_MESSAGE, desc = "获取微信群发历史消息")
    public GetHisMessageBackResult funcGetHisMessage(@ServiceParam("param") PageVO param);

    /**
     * 5070626-保存登录信息
     * @param param
     * @return
     */
    @Service(functionId = IFSFunctionIdsNew.IFSDavWeiboFuncIds.FUNC_SAVE_LOGIN_INFORMATION, desc = "保存登录信息")
    public HSBCPSBackVO funcSaveLoginInformation(@ServiceParam("param") SaveLoginInformationForm param);

    /**
     * 5070628-发送微信消息
     * @param param
     * @return
     */
    @Service(functionId = IFSFunctionIdsNew.IFSDavWeiboFuncIds.FUNC_SEND_WX_MESSAGE, desc = "发送微信消息")
    public HSBCPSBackVO funcSendWxMessage(@ServiceParam("param") SendWxMessageForm param);
}
